既然接下來要介紹瀏覽器漏洞,不得不先理解下它的架構了!
從 Google Developper [1] 抓來的圖片 xD

平常打開瀏覽器時可能大家不太會去注意到,除了你開 chrome.exe 時跳出的那個大 APP,背後運作的顯示、渲染內容和執行/解析網站程式碼、甚至是各種在瀏覽器上可安裝的 Plugins/Add-on 本身都是獨立的 Process,再透過 IPC 通道進行通訊!
會這樣做是因為早期的瀏覽器裡面,當使用者開了多個分頁,會因為共享同個 Process 而導致其中一分頁出錯/占用大量資源時同時拖垮整個瀏覽器在瀏覽的其他頁面,進而影響整體的穩定性。
"通常而言" 瀏覽器上漏洞利用比較針對於 Renderer Process。
畢竟比較可以想像的是,受害者點開一個攻擊者提供的連結後,瀏覽器透過 Render Process 去渲染網站內容,執行裡面的 JS 程式碼、引入 CSS 排版樣式等等地。
也因此,現在瀏覽器架構裡 Renderer Process 因為不需要直接操作檔案/系統等層級而有額外的 Sandbox 進行保護!
(特別注意到,Javascript Interpreter 像是 v8 自帶的 Sandbox 不是 Renderer Process Sandbox)
在 Renderer Process 中超過一半的漏洞都是針對 Javascript Interpreter 上的記憶體漏洞,所以接下來兩天主力也是介紹在這邊~
不過也在其他部位發生過蠻有趣的攻擊 像是今年很有名,來自 Orange 大大串四個邏輯洞打穿 Microsoft Edge 的攻擊 [2]
以及一樣在 Google Chrome no sandbox 時的 CSS Pwn [3],特別注意到雖然漏洞本身沒有達成 Renderer Sandbox Escape,僅有 Render RCE,但常常對 APT 組織串連其他像是 IPC 相關漏洞 [4] 達成 sbx!
